package com.cleaningcloud.cld.service.mini;

import com.cleaningcloud.cld.api.domain.CldStaff;
import com.cleaningcloud.cld.api.domain.Vo.CldStaffDto;
import com.cleaningcloud.cld.domain.CldDegreetitleResult;
import com.cleaningcloud.cld.domain.CldNoticeConfirm;
import com.cleaningcloud.cld.domain.mini.UserInfo;
import com.cleaningcloud.cld.domain.mini.addSurveryDto;
import com.cleaningcloud.cld.domain.vo.CldNoticeConfirmVo;
import com.cleaningcloud.cld.domain.vo.CldStaffVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 人事管理接口
 */
public interface IMiniPersonnelService {

    /**
     * 获取员工属性
     *
     * @param staffId
     * @return
     */
    UserInfo selectStaffAttributesByStaffId(Long staffId);


    /**
     * 待办事项
     *
     * @param staffId
     * @return
     */
    Map<String, Object> getStaffTodo(Long projectPostId,Long staffId);


    /**
     * 新增员工
     *
     * @param cldStaffDto
     * @return
     */
    int insertStaff(CldStaffDto cldStaffDto);

    /**
     * 获取员工信息详情
     *
     * @param staffId
     * @return
     */
    CldStaffVo getStaffInfo(Long staffId);

    /**
     * 修改员工信息
     *
     * @param cldStaff
     * @return
     */
    int updateCldStaff(CldStaffDto cldStaff);

    /**
     * 修改密码
     *
     * @param staffId
     * @param password
     * @param newPassword
     * @return
     */
    int updatePassword(String password, String newPassword);

    /**
     * 找回密码
     *
     * @param phone
     * @param password
     * @param code
     * @return
     */
    int recoverPassword(String phone, String password, String code);

    /**
     * @Author Shaw
     * @Description 获取员工信息(小程序-在职人员列表)
     * @date: 2025-05-28 15:58
     * @param: //TODO
     */
    List<CldStaffVo> getGroupStaffList(CldStaffDto cldStaffDto);

    /**
     * 查询员工列表
     *
     * @param cldStaffDto
     * @return
     */
    List<CldStaffVo> getStaffList(CldStaffDto cldStaffDto);

    /**
     * 离职申请
     *
     * @param cldStaff
     * @return
     */
    int staffResignation(CldStaff cldStaff);

    /**
     * 审核
     *
     * @param cldStaff
     * @return
     */
    int auditStaff(CldStaff cldStaff);

    /**
     * 获取通知公共列表
     *
     * @return
     */
    List<CldNoticeConfirmVo> getNoticeList(CldNoticeConfirm cldNoticeConfirm);

    /**
     * 通知公告确认
     *
     * @param cldNoticeConfirm
     * @return
     */
    int noticeConfirm(CldNoticeConfirm cldNoticeConfirm);

    /**
     * 通知公告详情
     *
     * @param noticeConfirmId
     * @return
     */
    CldNoticeConfirmVo getNoticeDetails(Long noticeConfirmId);


    /**
     * 满意度提交
     *
     * @param cldDegreetitleVo
     * @return
     */
    int addSurvery(addSurveryDto addSurveryDto);


}
